{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "22a7a14a-ffba-4a54-b9d9-a918aab2b3c5",
   "metadata": {
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1\n",
      "1\n",
      "1\n",
      "1\n",
      "1\n",
      "1\n",
      "1\n",
      "1\n",
      "1\n",
      "1\n",
      "1\n"
     ]
    }
   ],
   "source": [
    "from xml.etree import ElementTree as ET\n",
    "\n",
    "vrt_string ='<VRTDataset rasterXSize=\"8131\" rasterYSize=\"8267\"><SRS dataAxisToSRSAxisMapping=\"1,2\">PROJCS[\"WGS 84 / UTM zone 50N\",GEOGCS[\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\",117],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"32650\"]]</SRS><GeoTransform>  3.6148500000000000e+05,  2.8636363636363637e+01,  0.0000000000000000e+00,  4.5825150000000000e+06,  0.0000000000000000e+00, -2.8636363636363637e+01</GeoTransform><VRTRasterBand dataType=\"UInt16\" band=\"1\"><ComplexSource resampling=\"nearest\"><SourceFilename relativeToVRT=\"1\">LC81230322017127LGN00/LC08_L1TP_123032_20170507_20170515_01_T1_B1.TIF</SourceFilename><SourceBand>1</SourceBand><SourceProperties RasterXSize=\"7761\" RasterYSize=\"7891\" DataType=\"UInt16\" BlockXSize=\"7761\" BlockYSize=\"1\" /><SrcRect xOff=\"0\" yOff=\"0\" xSize=\"7761\" ySize=\"7891\" /><DstRect xOff=\"0\" yOff=\"0\" xSize=\"8130.57142857143\" ySize=\"8266.7619047619\" /></ComplexSource></VRTRasterBand><VRTRasterBand dataType=\"UInt16\" band=\"2\"><ComplexSource resampling=\"nearest\"><SourceFilename relativeToVRT=\"1\">LC81230322017127LGN00/LC08_L1TP_123032_20170507_20170515_01_T1_B2.TIF</SourceFilename><SourceBand>1</SourceBand><SourceProperties RasterXSize=\"7761\" RasterYSize=\"7891\" DataType=\"UInt16\" BlockXSize=\"7761\" BlockYSize=\"1\" /><SrcRect xOff=\"0\" yOff=\"0\" xSize=\"7761\" ySize=\"7891\" /><DstRect xOff=\"0\" yOff=\"0\" xSize=\"8130.57142857143\" ySize=\"8266.7619047619\" /></ComplexSource></VRTRasterBand><VRTRasterBand dataType=\"UInt16\" band=\"3\"><ComplexSource resampling=\"nearest\"><SourceFilename relativeToVRT=\"1\">LC81230322017127LGN00/LC08_L1TP_123032_20170507_20170515_01_T1_B3.TIF</SourceFilename><SourceBand>1</SourceBand><SourceProperties RasterXSize=\"7761\" RasterYSize=\"7891\" DataType=\"UInt16\" BlockXSize=\"7761\" BlockYSize=\"1\" /><SrcRect xOff=\"0\" yOff=\"0\" xSize=\"7761\" ySize=\"7891\" /><DstRect xOff=\"0\" yOff=\"0\" xSize=\"8130.57142857143\" ySize=\"8266.7619047619\" /></ComplexSource></VRTRasterBand><VRTRasterBand dataType=\"UInt16\" band=\"4\"><ComplexSource resampling=\"nearest\"><SourceFilename relativeToVRT=\"1\">LC81230322017127LGN00/LC08_L1TP_123032_20170507_20170515_01_T1_B4.TIF</SourceFilename><SourceBand>1</SourceBand><SourceProperties RasterXSize=\"7761\" RasterYSize=\"7891\" DataType=\"UInt16\" BlockXSize=\"7761\" BlockYSize=\"1\" /><SrcRect xOff=\"0\" yOff=\"0\" xSize=\"7761\" ySize=\"7891\" /><DstRect xOff=\"0\" yOff=\"0\" xSize=\"8130.57142857143\" ySize=\"8266.7619047619\" /></ComplexSource></VRTRasterBand><VRTRasterBand dataType=\"UInt16\" band=\"5\"><ComplexSource resampling=\"nearest\"><SourceFilename relativeToVRT=\"1\">LC81230322017127LGN00/LC08_L1TP_123032_20170507_20170515_01_T1_B5.TIF</SourceFilename><SourceBand>1</SourceBand><SourceProperties RasterXSize=\"7761\" RasterYSize=\"7891\" DataType=\"UInt16\" BlockXSize=\"7761\" BlockYSize=\"1\" /><SrcRect xOff=\"0\" yOff=\"0\" xSize=\"7761\" ySize=\"7891\" /><DstRect xOff=\"0\" yOff=\"0\" xSize=\"8130.57142857143\" ySize=\"8266.7619047619\" /></ComplexSource></VRTRasterBand><VRTRasterBand dataType=\"UInt16\" band=\"6\"><ComplexSource resampling=\"nearest\"><SourceFilename relativeToVRT=\"1\">LC81230322017127LGN00/LC08_L1TP_123032_20170507_20170515_01_T1_B6.TIF</SourceFilename><SourceBand>1</SourceBand><SourceProperties RasterXSize=\"7761\" RasterYSize=\"7891\" DataType=\"UInt16\" BlockXSize=\"7761\" BlockYSize=\"1\" /><SrcRect xOff=\"0\" yOff=\"0\" xSize=\"7761\" ySize=\"7891\" /><DstRect xOff=\"0\" yOff=\"0\" xSize=\"8130.57142857143\" ySize=\"8266.7619047619\" /></ComplexSource></VRTRasterBand><VRTRasterBand dataType=\"UInt16\" band=\"7\"><ComplexSource resampling=\"nearest\"><SourceFilename relativeToVRT=\"1\">LC81230322017127LGN00/LC08_L1TP_123032_20170507_20170515_01_T1_B7.TIF</SourceFilename><SourceBand>1</SourceBand><SourceProperties RasterXSize=\"7761\" RasterYSize=\"7891\" DataType=\"UInt16\" BlockXSize=\"7761\" BlockYSize=\"1\" /><SrcRect xOff=\"0\" yOff=\"0\" xSize=\"7761\" ySize=\"7891\" /><DstRect xOff=\"0\" yOff=\"0\" xSize=\"8130.57142857143\" ySize=\"8266.7619047619\" /></ComplexSource></VRTRasterBand><VRTRasterBand dataType=\"UInt16\" band=\"8\"><ComplexSource resampling=\"nearest\"><SourceFilename relativeToVRT=\"1\">LC81230322017127LGN00/LC08_L1TP_123032_20170507_20170515_01_T1_B8.TIF</SourceFilename><SourceBand>1</SourceBand><SourceProperties RasterXSize=\"15521\" RasterYSize=\"15781\" DataType=\"UInt16\" BlockXSize=\"15521\" BlockYSize=\"1\" /><SrcRect xOff=\"0\" yOff=\"0\" xSize=\"15521\" ySize=\"15781\" /><DstRect xOff=\"0.261904761904762\" yOff=\"0.261904761904762\" xSize=\"8130.04761904762\" ySize=\"8266.2380952381\" /></ComplexSource></VRTRasterBand><VRTRasterBand dataType=\"UInt16\" band=\"9\"><ComplexSource resampling=\"nearest\"><SourceFilename relativeToVRT=\"1\">LC81230322017127LGN00/LC08_L1TP_123032_20170507_20170515_01_T1_B9.TIF</SourceFilename><SourceBand>1</SourceBand><SourceProperties RasterXSize=\"7761\" RasterYSize=\"7891\" DataType=\"UInt16\" BlockXSize=\"7761\" BlockYSize=\"1\" /><SrcRect xOff=\"0\" yOff=\"0\" xSize=\"7761\" ySize=\"7891\" /><DstRect xOff=\"0\" yOff=\"0\" xSize=\"8130.57142857143\" ySize=\"8266.7619047619\" /></ComplexSource></VRTRasterBand><VRTRasterBand dataType=\"UInt16\" band=\"10\"><ComplexSource resampling=\"nearest\"><SourceFilename relativeToVRT=\"1\">LC81230322017127LGN00/LC08_L1TP_123032_20170507_20170515_01_T1_B10.TIF</SourceFilename><SourceBand>1</SourceBand><SourceProperties RasterXSize=\"7761\" RasterYSize=\"7891\" DataType=\"UInt16\" BlockXSize=\"7761\" BlockYSize=\"1\" /><SrcRect xOff=\"0\" yOff=\"0\" xSize=\"7761\" ySize=\"7891\" /><DstRect xOff=\"0\" yOff=\"0\" xSize=\"8130.57142857143\" ySize=\"8266.7619047619\" /></ComplexSource></VRTRasterBand><VRTRasterBand dataType=\"UInt16\" band=\"11\"><ComplexSource resampling=\"nearest\"><SourceFilename relativeToVRT=\"1\">LC81230322017127LGN00/LC08_L1TP_123032_20170507_20170515_01_T1_B11.TIF</SourceFilename><SourceBand>1</SourceBand><SourceProperties RasterXSize=\"7761\" RasterYSize=\"7891\" DataType=\"UInt16\" BlockXSize=\"7761\" BlockYSize=\"1\" /><SrcRect xOff=\"0\" yOff=\"0\" xSize=\"7761\" ySize=\"7891\" /><DstRect xOff=\"0\" yOff=\"0\" xSize=\"8130.57142857143\" ySize=\"8266.7619047619\" /></ComplexSource></VRTRasterBand></VRTDataset>'\n",
    "#print(vrt_string)\n",
    "\n",
    "vrt_root = ET.fromstring(vrt_string)\n",
    "\n",
    "for subelem in list(vrt_root):\n",
    "    \n",
    "    if subelem.tag==\"VRTRasterBand\":\n",
    "    #if subelem.tag==\"ComplexSource\":\n",
    "        #print(subelem.tag)\n",
    "        node = subelem.find(\"./ComplexSource/SourceBand\")\n",
    "        print(node.text)\n",
    "        \n",
    "        "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "id": "c22fa8ce-c489-4da7-a0ac-9b81c3f93805",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<root><VRTRasterBand dataType=\"Byte\" band=\"4\" subClass=\"VRTWarpedRasterBand\"><ColorInterp>Alpha</ColorInterp></VRTRasterBand><node1><GDALWarpOptions /></node1></root>\n"
     ]
    }
   ],
   "source": [
    "#xml_string = \"<root></root>\"\n",
    "#xml_string = \"<root><GDALWarpOptions></GDALWarpOptions></root>\"\n",
    "xml_string = \"<root><node1><GDALWarpOptions></GDALWarpOptions></node1></root>\"\n",
    "nb_bands = 3\n",
    "xmlRoot = ET.fromstring(xml_string)\n",
    "tb = ET.TreeBuilder()\n",
    "tb.start(\n",
    "    \"VRTRasterBand\",\n",
    "    {\n",
    "        \"dataType\": \"Byte\",\n",
    "        \"band\": str(3+1),\n",
    "        \"subClass\": \"VRTWarpedRasterBand\",\n",
    "    },\n",
    ")\n",
    "tb.start(\"ColorInterp\", {})\n",
    "tb.data(\"Alpha\")\n",
    "tb.end(\"ColorInterp\")\n",
    "tb.end(\"VRTRasterBand\")\n",
    "elem = tb.close()\n",
    "\n",
    "xmlRoot.insert(0, elem)\n",
    "print(ET.tostring (xmlRoot, encoding='utf-8').decode())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "72f71bba-d043-4831-bba2-0040000153fd",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "b'<root><VRTRasterBand dataType=\"Byte\" band=\"4\" subClass=\"VRTWarpedRasterBand\"><ColorInterp>Alpha</ColorInterp></VRTRasterBand><node1><GDALWarpOptions><DstAlphaBand>4</DstAlphaBand><DstAlphaBand>4</DstAlphaBand></GDALWarpOptions></node1></root>'\n"
     ]
    }
   ],
   "source": [
    "warp_options = xmlRoot.find(\".//GDALWarpOptions\")\n",
    "tb = ElementTree.TreeBuilder()\n",
    "tb.start(\"DstAlphaBand\", {})\n",
    "tb.data(str(nb_bands + 1))\n",
    "tb.end(\"DstAlphaBand\")\n",
    "elem = tb.close()\n",
    "warp_options.append(elem)\n",
    "print(ET.tostring (xmlRoot, encoding='utf-8'))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "id": "6cba8a3c-6acf-499f-bbb3-1e7f2554c169",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Looking in indexes: https://mirrors.aliyun.com/pypi/simple/\n",
      "Collecting ipyvolume\n",
      "  Downloading https://mirrors.aliyun.com/pypi/packages/88/ca/153406ca7ff41ea3ecf8c3b5c0db07364461e867fb197b1723bf0be2652d/ipyvolume-0.6.3-py3-none-any.whl (1.6 MB)\n",
      "\u001b[2K     \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.6/1.6 MB\u001b[0m \u001b[31m1.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m00:01\u001b[0m00:01\u001b[0m\n",
      "\u001b[?25hRequirement already satisfied: ipywidgets>=7.0.0 in /storage/DevEnv/python/py39/lib/python3.9/site-packages (from ipyvolume) (7.8.0)\n",
      "Requirement already satisfied: bqplot in /storage/DevEnv/python/py39/lib/python3.9/site-packages (from ipyvolume) (0.12.40)\n",
      "Requirement already satisfied: numpy in /storage/DevEnv/python/py39/lib/python3.9/site-packages (from ipyvolume) (1.24.4)\n",
      "Requirement already satisfied: traittypes in /storage/DevEnv/python/py39/lib/python3.9/site-packages (from ipyvolume) (0.2.1)\n",
      "Requirement already satisfied: traitlets in /home/geobeans/.local/lib/python3.9/site-packages (from ipyvolume) (5.9.0)\n",
      "Requirement already satisfied: Pillow in /storage/DevEnv/python/py39/lib/python3.9/site-packages (from ipyvolume) (9.5.0)\n",
      "Collecting ipywebrtc (from ipyvolume)\n",
      "  Downloading https://mirrors.aliyun.com/pypi/packages/e9/11/4b83894a009ef522b5751881e21ffec55d56b0900c0b788e2906ec01c51d/ipywebrtc-0.6.0-py2.py3-none-any.whl (260 kB)\n",
      "\u001b[2K     \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m260.7/260.7 kB\u001b[0m \u001b[31m1.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m00:01\u001b[0m00:01\u001b[0m\n",
      "\u001b[?25hRequirement already satisfied: requests in /storage/DevEnv/python/py39/lib/python3.9/site-packages (from ipyvolume) (2.29.0)\n",
      "Collecting ipyvuetify (from ipyvolume)\n",
      "  Downloading https://mirrors.aliyun.com/pypi/packages/77/24/df7e3e9acf4f3f7329ed3173b84fe606a6319729aa7d048fac1f267cffed/ipyvuetify-1.9.1-py2.py3-none-any.whl (5.9 MB)\n",
      "\u001b[2K     \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m5.9/5.9 MB\u001b[0m \u001b[31m1.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m00:01\u001b[0m00:01\u001b[0m\n",
      "\u001b[?25hCollecting ipyvue>=1.7.0 (from ipyvolume)\n",
      "  Downloading https://mirrors.aliyun.com/pypi/packages/a9/f7/5f899dac3dc430921ba7100d189bc90035fc7476d326a5fac07a4bc95059/ipyvue-1.10.2-py2.py3-none-any.whl (2.7 MB)\n",
      "\u001b[2K     \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m2.7/2.7 MB\u001b[0m \u001b[31m1.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m00:01\u001b[0m00:01\u001b[0m\n",
      "\u001b[?25hCollecting pythreejs>=2.4.0 (from ipyvolume)\n",
      "  Downloading https://mirrors.aliyun.com/pypi/packages/d8/8b/e2bbeb42068f0c48899e8eddd34902afc0f7429d4d2a152d2dc2670dc661/pythreejs-2.4.2-py3-none-any.whl (3.4 MB)\n",
      "\u001b[2K     \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m3.4/3.4 MB\u001b[0m \u001b[31m1.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m00:01\u001b[0m00:01\u001b[0m\n",
      "\u001b[?25hRequirement already satisfied: matplotlib in /storage/DevEnv/python/py39/lib/python3.9/site-packages (from ipyvolume) (3.7.1)\n",
      "Requirement already satisfied: comm>=0.1.3 in /storage/DevEnv/python/py39/lib/python3.9/site-packages (from ipywidgets>=7.0.0->ipyvolume) (0.1.4)\n",
      "Requirement already satisfied: ipython-genutils~=0.2.0 in /storage/DevEnv/python/py39/lib/python3.9/site-packages (from ipywidgets>=7.0.0->ipyvolume) (0.2.0)\n",
      "Requirement already satisfied: widgetsnbextension~=3.6.5 in /storage/DevEnv/python/py39/lib/python3.9/site-packages (from ipywidgets>=7.0.0->ipyvolume) (3.6.5)\n",
      "Requirement already satisfied: ipython>=4.0.0 in /storage/DevEnv/python/py39/lib/python3.9/site-packages (from ipywidgets>=7.0.0->ipyvolume) (8.12.0)\n",
      "Requirement already satisfied: jupyterlab-widgets<3,>=1.0.0 in /storage/DevEnv/python/py39/lib/python3.9/site-packages (from ipywidgets>=7.0.0->ipyvolume) (1.1.5)\n",
      "Collecting ipydatawidgets>=1.1.1 (from pythreejs>=2.4.0->ipyvolume)\n",
      "  Downloading https://mirrors.aliyun.com/pypi/packages/f1/5b/e63c877c4c94382b66de5045e08ec8cd960e8a4d22f0d62a4dfb1f9e5ac6/ipydatawidgets-4.3.5-py2.py3-none-any.whl (271 kB)\n",
      "\u001b[2K     \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m271.7/271.7 kB\u001b[0m \u001b[31m1.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0ma \u001b[36m0:00:01\u001b[0m\n",
      "\u001b[?25hRequirement already satisfied: pandas<3.0.0,>=1.0.0 in /storage/DevEnv/python/py39/lib/python3.9/site-packages (from bqplot->ipyvolume) (2.0.2)\n",
      "Requirement already satisfied: contourpy>=1.0.1 in /storage/DevEnv/python/py39/lib/python3.9/site-packages (from matplotlib->ipyvolume) (1.1.0)\n",
      "Requirement already satisfied: cycler>=0.10 in /storage/DevEnv/python/py39/lib/python3.9/site-packages (from matplotlib->ipyvolume) (0.11.0)\n",
      "Requirement already satisfied: fonttools>=4.22.0 in /storage/DevEnv/python/py39/lib/python3.9/site-packages (from matplotlib->ipyvolume) (4.40.0)\n",
      "Requirement already satisfied: kiwisolver>=1.0.1 in /storage/DevEnv/python/py39/lib/python3.9/site-packages (from matplotlib->ipyvolume) (1.4.4)\n",
      "Requirement already satisfied: packaging>=20.0 in /storage/DevEnv/python/py39/lib/python3.9/site-packages (from matplotlib->ipyvolume) (23.0)\n",
      "Requirement already satisfied: pyparsing>=2.3.1 in /storage/DevEnv/python/py39/lib/python3.9/site-packages (from matplotlib->ipyvolume) (3.1.0)\n",
      "Requirement already satisfied: python-dateutil>=2.7 in /storage/DevEnv/python/py39/lib/python3.9/site-packages (from matplotlib->ipyvolume) (2.8.2)\n",
      "Requirement already satisfied: importlib-resources>=3.2.0 in /storage/DevEnv/python/py39/lib/python3.9/site-packages (from matplotlib->ipyvolume) (5.12.0)\n",
      "Requirement already satisfied: charset-normalizer<4,>=2 in /storage/DevEnv/python/py39/lib/python3.9/site-packages (from requests->ipyvolume) (2.0.4)\n",
      "Requirement already satisfied: idna<4,>=2.5 in /storage/DevEnv/python/py39/lib/python3.9/site-packages (from requests->ipyvolume) (3.4)\n",
      "Requirement already satisfied: urllib3<1.27,>=1.21.1 in /storage/DevEnv/python/py39/lib/python3.9/site-packages (from requests->ipyvolume) (1.26.16)\n",
      "Requirement already satisfied: certifi>=2017.4.17 in /storage/DevEnv/python/py39/lib/python3.9/site-packages (from requests->ipyvolume) (2023.5.7)\n",
      "Requirement already satisfied: zipp>=3.1.0 in /storage/DevEnv/python/py39/lib/python3.9/site-packages (from importlib-resources>=3.2.0->matplotlib->ipyvolume) (3.11.0)\n",
      "Requirement already satisfied: backcall in /storage/DevEnv/python/py39/lib/python3.9/site-packages (from ipython>=4.0.0->ipywidgets>=7.0.0->ipyvolume) (0.2.0)\n",
      "Requirement already satisfied: decorator in /storage/DevEnv/python/py39/lib/python3.9/site-packages (from ipython>=4.0.0->ipywidgets>=7.0.0->ipyvolume) (5.1.1)\n",
      "Requirement already satisfied: jedi>=0.16 in /storage/DevEnv/python/py39/lib/python3.9/site-packages (from ipython>=4.0.0->ipywidgets>=7.0.0->ipyvolume) (0.18.1)\n",
      "Requirement already satisfied: matplotlib-inline in /storage/DevEnv/python/py39/lib/python3.9/site-packages (from ipython>=4.0.0->ipywidgets>=7.0.0->ipyvolume) (0.1.6)\n",
      "Requirement already satisfied: pickleshare in /storage/DevEnv/python/py39/lib/python3.9/site-packages (from ipython>=4.0.0->ipywidgets>=7.0.0->ipyvolume) (0.7.5)\n",
      "Requirement already satisfied: prompt-toolkit!=3.0.37,<3.1.0,>=3.0.30 in /storage/DevEnv/python/py39/lib/python3.9/site-packages (from ipython>=4.0.0->ipywidgets>=7.0.0->ipyvolume) (3.0.36)\n",
      "Requirement already satisfied: pygments>=2.4.0 in /storage/DevEnv/python/py39/lib/python3.9/site-packages (from ipython>=4.0.0->ipywidgets>=7.0.0->ipyvolume) (2.15.1)\n",
      "Requirement already satisfied: stack-data in /storage/DevEnv/python/py39/lib/python3.9/site-packages (from ipython>=4.0.0->ipywidgets>=7.0.0->ipyvolume) (0.2.0)\n",
      "Requirement already satisfied: typing-extensions in /storage/DevEnv/python/py39/lib/python3.9/site-packages (from ipython>=4.0.0->ipywidgets>=7.0.0->ipyvolume) (4.6.3)\n",
      "Requirement already satisfied: pexpect>4.3 in /storage/DevEnv/python/py39/lib/python3.9/site-packages (from ipython>=4.0.0->ipywidgets>=7.0.0->ipyvolume) (4.8.0)\n",
      "Requirement already satisfied: pytz>=2020.1 in /storage/DevEnv/python/py39/lib/python3.9/site-packages (from pandas<3.0.0,>=1.0.0->bqplot->ipyvolume) (2022.7)\n",
      "Requirement already satisfied: tzdata>=2022.1 in /storage/DevEnv/python/py39/lib/python3.9/site-packages (from pandas<3.0.0,>=1.0.0->bqplot->ipyvolume) (2023.3)\n",
      "Requirement already satisfied: six>=1.5 in /storage/DevEnv/python/py39/lib/python3.9/site-packages (from python-dateutil>=2.7->matplotlib->ipyvolume) (1.16.0)\n",
      "Requirement already satisfied: notebook>=4.4.1 in /storage/DevEnv/python/py39/lib/python3.9/site-packages (from widgetsnbextension~=3.6.5->ipywidgets>=7.0.0->ipyvolume) (6.5.4)\n",
      "Requirement already satisfied: parso<0.9.0,>=0.8.0 in /storage/DevEnv/python/py39/lib/python3.9/site-packages (from jedi>=0.16->ipython>=4.0.0->ipywidgets>=7.0.0->ipyvolume) (0.8.3)\n",
      "Requirement already satisfied: jinja2 in /home/geobeans/.local/lib/python3.9/site-packages (from notebook>=4.4.1->widgetsnbextension~=3.6.5->ipywidgets>=7.0.0->ipyvolume) (3.1.2)\n",
      "Requirement already satisfied: tornado>=6.1 in /home/geobeans/.local/lib/python3.9/site-packages (from notebook>=4.4.1->widgetsnbextension~=3.6.5->ipywidgets>=7.0.0->ipyvolume) (6.3.2)\n",
      "Requirement already satisfied: pyzmq>=17 in /home/geobeans/.local/lib/python3.9/site-packages (from notebook>=4.4.1->widgetsnbextension~=3.6.5->ipywidgets>=7.0.0->ipyvolume) (25.1.0)\n",
      "Requirement already satisfied: argon2-cffi in /storage/DevEnv/python/py39/lib/python3.9/site-packages (from notebook>=4.4.1->widgetsnbextension~=3.6.5->ipywidgets>=7.0.0->ipyvolume) (21.3.0)\n",
      "Requirement already satisfied: jupyter-core>=4.6.1 in /home/geobeans/.local/lib/python3.9/site-packages (from notebook>=4.4.1->widgetsnbextension~=3.6.5->ipywidgets>=7.0.0->ipyvolume) (5.3.1)\n",
      "Requirement already satisfied: jupyter-client>=5.3.4 in /home/geobeans/.local/lib/python3.9/site-packages (from notebook>=4.4.1->widgetsnbextension~=3.6.5->ipywidgets>=7.0.0->ipyvolume) (8.2.0)\n",
      "Requirement already satisfied: nbformat in /storage/DevEnv/python/py39/lib/python3.9/site-packages (from notebook>=4.4.1->widgetsnbextension~=3.6.5->ipywidgets>=7.0.0->ipyvolume) (5.7.0)\n",
      "Requirement already satisfied: nbconvert>=5 in /storage/DevEnv/python/py39/lib/python3.9/site-packages (from notebook>=4.4.1->widgetsnbextension~=3.6.5->ipywidgets>=7.0.0->ipyvolume) (6.5.4)\n",
      "Requirement already satisfied: nest-asyncio>=1.5 in /storage/DevEnv/python/py39/lib/python3.9/site-packages (from notebook>=4.4.1->widgetsnbextension~=3.6.5->ipywidgets>=7.0.0->ipyvolume) (1.5.6)\n",
      "Requirement already satisfied: ipykernel in /storage/DevEnv/python/py39/lib/python3.9/site-packages (from notebook>=4.4.1->widgetsnbextension~=3.6.5->ipywidgets>=7.0.0->ipyvolume) (6.19.2)\n",
      "Requirement already satisfied: Send2Trash>=1.8.0 in /storage/DevEnv/python/py39/lib/python3.9/site-packages (from notebook>=4.4.1->widgetsnbextension~=3.6.5->ipywidgets>=7.0.0->ipyvolume) (1.8.0)\n",
      "Requirement already satisfied: terminado>=0.8.3 in /storage/DevEnv/python/py39/lib/python3.9/site-packages (from notebook>=4.4.1->widgetsnbextension~=3.6.5->ipywidgets>=7.0.0->ipyvolume) (0.17.1)\n",
      "Requirement already satisfied: prometheus-client in /storage/DevEnv/python/py39/lib/python3.9/site-packages (from notebook>=4.4.1->widgetsnbextension~=3.6.5->ipywidgets>=7.0.0->ipyvolume) (0.14.1)\n",
      "Requirement already satisfied: nbclassic>=0.4.7 in /storage/DevEnv/python/py39/lib/python3.9/site-packages (from notebook>=4.4.1->widgetsnbextension~=3.6.5->ipywidgets>=7.0.0->ipyvolume) (0.5.5)\n",
      "Requirement already satisfied: ptyprocess>=0.5 in /storage/DevEnv/python/py39/lib/python3.9/site-packages (from pexpect>4.3->ipython>=4.0.0->ipywidgets>=7.0.0->ipyvolume) (0.7.0)\n",
      "Requirement already satisfied: wcwidth in /storage/DevEnv/python/py39/lib/python3.9/site-packages (from prompt-toolkit!=3.0.37,<3.1.0,>=3.0.30->ipython>=4.0.0->ipywidgets>=7.0.0->ipyvolume) (0.2.5)\n",
      "Requirement already satisfied: executing in /storage/DevEnv/python/py39/lib/python3.9/site-packages (from stack-data->ipython>=4.0.0->ipywidgets>=7.0.0->ipyvolume) (0.8.3)\n",
      "Requirement already satisfied: asttokens in /storage/DevEnv/python/py39/lib/python3.9/site-packages (from stack-data->ipython>=4.0.0->ipywidgets>=7.0.0->ipyvolume) (2.0.5)\n",
      "Requirement already satisfied: pure-eval in /storage/DevEnv/python/py39/lib/python3.9/site-packages (from stack-data->ipython>=4.0.0->ipywidgets>=7.0.0->ipyvolume) (0.2.2)\n",
      "Requirement already satisfied: importlib-metadata>=4.8.3 in /storage/DevEnv/python/py39/lib/python3.9/site-packages (from jupyter-client>=5.3.4->notebook>=4.4.1->widgetsnbextension~=3.6.5->ipywidgets>=7.0.0->ipyvolume) (6.0.0)\n",
      "Requirement already satisfied: platformdirs>=2.5 in /storage/DevEnv/python/py39/lib/python3.9/site-packages (from jupyter-core>=4.6.1->notebook>=4.4.1->widgetsnbextension~=3.6.5->ipywidgets>=7.0.0->ipyvolume) (2.5.2)\n",
      "Requirement already satisfied: jupyter-server>=1.8 in /home/geobeans/.local/lib/python3.9/site-packages (from nbclassic>=0.4.7->notebook>=4.4.1->widgetsnbextension~=3.6.5->ipywidgets>=7.0.0->ipyvolume) (1.24.0)\n",
      "Requirement already satisfied: notebook-shim>=0.1.0 in /storage/DevEnv/python/py39/lib/python3.9/site-packages (from nbclassic>=0.4.7->notebook>=4.4.1->widgetsnbextension~=3.6.5->ipywidgets>=7.0.0->ipyvolume) (0.2.2)\n",
      "Requirement already satisfied: lxml in /storage/DevEnv/python/py39/lib/python3.9/site-packages (from nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.5->ipywidgets>=7.0.0->ipyvolume) (4.9.2)\n",
      "Requirement already satisfied: beautifulsoup4 in /storage/DevEnv/python/py39/lib/python3.9/site-packages (from nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.5->ipywidgets>=7.0.0->ipyvolume) (4.12.2)\n",
      "Requirement already satisfied: bleach in /storage/DevEnv/python/py39/lib/python3.9/site-packages (from nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.5->ipywidgets>=7.0.0->ipyvolume) (4.1.0)\n",
      "Requirement already satisfied: defusedxml in /storage/DevEnv/python/py39/lib/python3.9/site-packages (from nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.5->ipywidgets>=7.0.0->ipyvolume) (0.7.1)\n",
      "Requirement already satisfied: entrypoints>=0.2.2 in /storage/DevEnv/python/py39/lib/python3.9/site-packages (from nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.5->ipywidgets>=7.0.0->ipyvolume) (0.4)\n",
      "Requirement already satisfied: jupyterlab-pygments in /storage/DevEnv/python/py39/lib/python3.9/site-packages (from nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.5->ipywidgets>=7.0.0->ipyvolume) (0.1.2)\n",
      "Requirement already satisfied: MarkupSafe>=2.0 in /storage/DevEnv/python/py39/lib/python3.9/site-packages (from nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.5->ipywidgets>=7.0.0->ipyvolume) (2.1.1)\n",
      "Requirement already satisfied: mistune<2,>=0.8.1 in /storage/DevEnv/python/py39/lib/python3.9/site-packages (from nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.5->ipywidgets>=7.0.0->ipyvolume) (0.8.4)\n",
      "Requirement already satisfied: nbclient>=0.5.0 in /storage/DevEnv/python/py39/lib/python3.9/site-packages (from nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.5->ipywidgets>=7.0.0->ipyvolume) (0.5.13)\n",
      "Requirement already satisfied: pandocfilters>=1.4.1 in /storage/DevEnv/python/py39/lib/python3.9/site-packages (from nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.5->ipywidgets>=7.0.0->ipyvolume) (1.5.0)\n",
      "Requirement already satisfied: tinycss2 in /storage/DevEnv/python/py39/lib/python3.9/site-packages (from nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.5->ipywidgets>=7.0.0->ipyvolume) (1.2.1)\n",
      "Requirement already satisfied: fastjsonschema in /storage/DevEnv/python/py39/lib/python3.9/site-packages (from nbformat->notebook>=4.4.1->widgetsnbextension~=3.6.5->ipywidgets>=7.0.0->ipyvolume) (2.16.2)\n",
      "Requirement already satisfied: jsonschema>=2.6 in /home/geobeans/.local/lib/python3.9/site-packages (from nbformat->notebook>=4.4.1->widgetsnbextension~=3.6.5->ipywidgets>=7.0.0->ipyvolume) (4.17.3)\n",
      "Requirement already satisfied: argon2-cffi-bindings in /storage/DevEnv/python/py39/lib/python3.9/site-packages (from argon2-cffi->notebook>=4.4.1->widgetsnbextension~=3.6.5->ipywidgets>=7.0.0->ipyvolume) (21.2.0)\n",
      "Requirement already satisfied: debugpy>=1.0 in /storage/DevEnv/python/py39/lib/python3.9/site-packages (from ipykernel->notebook>=4.4.1->widgetsnbextension~=3.6.5->ipywidgets>=7.0.0->ipyvolume) (1.5.1)\n",
      "Requirement already satisfied: psutil in /storage/DevEnv/python/py39/lib/python3.9/site-packages (from ipykernel->notebook>=4.4.1->widgetsnbextension~=3.6.5->ipywidgets>=7.0.0->ipyvolume) (5.9.0)\n",
      "Requirement already satisfied: attrs>=17.4.0 in /storage/DevEnv/python/py39/lib/python3.9/site-packages (from jsonschema>=2.6->nbformat->notebook>=4.4.1->widgetsnbextension~=3.6.5->ipywidgets>=7.0.0->ipyvolume) (22.1.0)\n",
      "Requirement already satisfied: pyrsistent!=0.17.0,!=0.17.1,!=0.17.2,>=0.14.0 in /storage/DevEnv/python/py39/lib/python3.9/site-packages (from jsonschema>=2.6->nbformat->notebook>=4.4.1->widgetsnbextension~=3.6.5->ipywidgets>=7.0.0->ipyvolume) (0.18.0)\n",
      "Requirement already satisfied: anyio<4,>=3.1.0 in /storage/DevEnv/python/py39/lib/python3.9/site-packages (from jupyter-server>=1.8->nbclassic>=0.4.7->notebook>=4.4.1->widgetsnbextension~=3.6.5->ipywidgets>=7.0.0->ipyvolume) (3.5.0)\n",
      "Requirement already satisfied: websocket-client in /storage/DevEnv/python/py39/lib/python3.9/site-packages (from jupyter-server>=1.8->nbclassic>=0.4.7->notebook>=4.4.1->widgetsnbextension~=3.6.5->ipywidgets>=7.0.0->ipyvolume) (0.58.0)\n",
      "Requirement already satisfied: cffi>=1.0.1 in /storage/DevEnv/python/py39/lib/python3.9/site-packages (from argon2-cffi-bindings->argon2-cffi->notebook>=4.4.1->widgetsnbextension~=3.6.5->ipywidgets>=7.0.0->ipyvolume) (1.15.1)\n",
      "Requirement already satisfied: soupsieve>1.2 in /storage/DevEnv/python/py39/lib/python3.9/site-packages (from beautifulsoup4->nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.5->ipywidgets>=7.0.0->ipyvolume) (2.4)\n",
      "Requirement already satisfied: webencodings in /storage/DevEnv/python/py39/lib/python3.9/site-packages (from bleach->nbconvert>=5->notebook>=4.4.1->widgetsnbextension~=3.6.5->ipywidgets>=7.0.0->ipyvolume) (0.5.1)\n",
      "Requirement already satisfied: sniffio>=1.1 in /storage/DevEnv/python/py39/lib/python3.9/site-packages (from anyio<4,>=3.1.0->jupyter-server>=1.8->nbclassic>=0.4.7->notebook>=4.4.1->widgetsnbextension~=3.6.5->ipywidgets>=7.0.0->ipyvolume) (1.2.0)\n",
      "Requirement already satisfied: pycparser in /storage/DevEnv/python/py39/lib/python3.9/site-packages (from cffi>=1.0.1->argon2-cffi-bindings->argon2-cffi->notebook>=4.4.1->widgetsnbextension~=3.6.5->ipywidgets>=7.0.0->ipyvolume) (2.21)\n",
      "Installing collected packages: ipywebrtc, ipyvue, ipydatawidgets, pythreejs, ipyvuetify, ipyvolume\n",
      "Successfully installed ipydatawidgets-4.3.5 ipyvolume-0.6.3 ipyvue-1.10.2 ipyvuetify-1.9.1 ipywebrtc-0.6.0 pythreejs-2.4.2\n",
      "Note: you may need to restart the kernel to use updated packages.\n"
     ]
    }
   ],
   "source": [
    "pip install ipyvolume\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "27e7d3ab-797a-43f9-ae1e-99109045b881",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "py39",
   "language": "python",
   "name": "py39"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.9.16"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
